home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Games / Life 1.0d2 / LifeMenus.c < prev    next >
Encoding:
Text File  |  1995-06-22  |  3.6 KB  |  255 lines  |  [TEXT/MPCC]

  1. // LifeMenus.c
  2. // Handle the menu operation of Mike's Life
  3. // Copyright ©1995 Michael D. Crawford.  All Rights Reserved.
  4. // 11 Jun 95 Mike Crawford crawford@scruznet.com
  5. //
  6. // Revision History:
  7. // 11 Jun 95    MDC    New today
  8.  
  9. #include <QDOffscreen.h>
  10. #include "LifeMenus.h"
  11. #include "LifeFile.h"
  12. #include "LifeMain.h"
  13. #include "Control.h"
  14. #include "MenuPrivate.h"
  15.  
  16. Boolean ReallyQuit( void );
  17. short ReallyClose( void );
  18. void DoAboutBox( void );
  19.  
  20. #define rAboutBoxID    128
  21. enum{
  22.     kABOkButton = 1,
  23.     kABDefUser,
  24.     kABAboutPict,
  25.     kABVersionUser
  26. };
  27.  
  28. void AdjustMenus( void )
  29. {
  30.     return;
  31. }
  32.  
  33. void DoMenuChoice( long message )
  34. {
  35.     short    menuID;
  36.     short    menuItem;
  37.     
  38.     menuID = HiWord( message );
  39.     menuItem = LoWord( message );
  40.     
  41.     switch( menuID ){
  42.         case rAppleMenuID:
  43.             DoAppleMenu( menuItem );
  44.             break;
  45.         case rFileMenuID:
  46.             DoFileMenu( menuItem );
  47.             break;
  48.         case rEditMenuID:
  49.             DoEditMenu( menuItem );
  50.             break;
  51.         case rLifeMenuID:
  52.             DoLifeMenu( menuItem );
  53.             break;
  54.     }
  55.  
  56.     HiliteMenu( 0 );
  57.  
  58.     return;
  59. }
  60.  
  61. void DoAppleMenu( short item )
  62. {
  63.     Str255    daName;
  64.     MenuHandle    mHdl;
  65.  
  66.     switch( item ){
  67.         case kAMAboutItem:
  68.             DoAboutBox();
  69.             break;
  70.             
  71.         case kAMDash1:
  72.             break;
  73.         
  74.         default:
  75.             mHdl = GetMenu( rAppleMenuID );
  76.             if ( mHdl ){
  77.                 GetItem( mHdl, item, daName );
  78.                 OpenDeskAcc( daName );
  79.             }
  80.             break;
  81.     }
  82.  
  83.     return;
  84. }
  85.  
  86. void DoFileMenu( short item )
  87. {
  88.     switch( item ){
  89.         case kFMNewItem:
  90.             DoNewWindow();
  91.             break;
  92.         case kFMOpenItem:
  93.             break;
  94.         case kFMCloseItem:
  95.             DoCloseWindow();
  96.             break;
  97.         case kFMSaveItem:
  98.             break;
  99.         case kFMSaveAsItem:
  100.             break;
  101.         case kFMDash1:
  102.             break;
  103.         case kFMPageSetupItem:
  104.             break;
  105.         case kFMPrintItem:
  106.             break;
  107.         case kFMDash2:
  108.             break;
  109.         case kFMQuitItem:
  110.             if ( ReallyQuit() ){
  111.                 TimeToQuit();
  112.             }
  113.             break;
  114.     }
  115.  
  116.     return;
  117. }
  118.  
  119. void DoEditMenu( short item )
  120. {
  121.     switch( item ){
  122.         case kEMUndoItem:
  123.             break;
  124.         case kEMDash1:
  125.             break;
  126.         case kEMCutItem:
  127.             break;
  128.         case kEMCopyItem:
  129.             break;
  130.         case kEMPasteItem:
  131.             break;
  132.         case kEMClearItem:
  133.             break;
  134.         case kEMDash2:
  135.             break;
  136.         case kEMSelectAllItem:
  137.             break;
  138.         case kEMDash3:
  139.             break;
  140.         case kEMPreferencesItem:
  141.             break;
  142.         case kEMDash4:
  143.             break;
  144.         case kEMShowClipboardItem:
  145.             break;
  146.     }
  147.  
  148.     return;
  149. }
  150.  
  151. void DoLifeMenu( short item )
  152. {
  153.     switch( item ){
  154.         case kLMRunItem:
  155.             StartRunning();
  156.             break;
  157.         case kLMStopItem:
  158.             StopRunning();
  159.             break;
  160.     }
  161.  
  162.     return;
  163. }
  164.  
  165. OSErr SetupMenus( void )
  166. {
  167.     Handle    mbarHdl;
  168.     MenuHandle    appleMenuHdl;
  169.     
  170.     mbarHdl = GetNewMBar( rMBarID );
  171.     if ( !mbarHdl )
  172.         return resNotFound;
  173.     
  174.     appleMenuHdl = GetMenu( rAppleMenuID );
  175.     if ( !appleMenuHdl )
  176.         return resNotFound;
  177.     
  178.     AddResMenu( appleMenuHdl, 'DRVR' );
  179.     
  180.     SetMenuBar( mbarHdl );
  181.     
  182.     DrawMenuBar();
  183.  
  184.     return noErr;
  185. }
  186.  
  187. Boolean ReallyQuit( void )
  188. {
  189.     // If there is a dirty window open, ask the user to Save/Cancel/Quit
  190.     // STUB
  191.     
  192.     return true;
  193. }
  194.  
  195. enum{
  196.     kWTCancel,
  197.     kWTSaveFirst,
  198.     kWTClose
  199. };
  200.  
  201. short ReallyClose( void )
  202. {
  203.     // If the front window is dirty, ask the user to Save/Cancel/Close
  204.     // STUB
  205.     
  206.     return kWTClose;
  207. }
  208.  
  209. void DoCloseWindow( void )
  210. {
  211.     short    whatToDo;
  212.     WindowPtr    win;
  213.     OSErr        err;
  214.     
  215.     
  216.     win = FrontWindow();
  217.     
  218.     if ( !win )
  219.         return;
  220.     
  221.     whatToDo = ReallyClose();
  222.     
  223.     if ( whatToDo == kWTCancel )
  224.         return;
  225.     
  226.     if ( whatToDo == kWTSaveFirst ){
  227.         err = DoSave();
  228.         if ( err )
  229.             return;
  230.     }
  231.     
  232.     CloseLifeWindow( win );
  233.     
  234.     return;
  235. }
  236.  
  237. void DoAboutBox( void )
  238. {
  239.     DialogPtr    dlg;
  240.     short        item;
  241.  
  242.     // Stub install default outline and version user items
  243.     
  244.     dlg = GetNewDialog( rAboutBoxID, (DialogPtr)NULL, (WindowPtr)-1 );
  245.     
  246.     ShowWindow( dlg );
  247.     
  248.     do{
  249.         ModalDialog( (ModalFilterUPP)NULL, &item );
  250.     }while( item != kABOkButton );
  251.     
  252.     DisposeDialog( dlg );
  253.     
  254.     return;
  255. }